草庐IT

Java Parallel Streams 关闭线程

全部标签

windows - 捕获 Windows 终端关闭正在运行的进程

在命令提示符窗口中,我有一个正在运行的进程。当进程仍在执行时,我单击命令提示符窗口一角的(红色)“X”。命令提示符窗口关闭,正在运行的进程终止。在Linux上,关闭正在运行的进程的父终端将向该进程发送SIGHUP。我如何在Windows上捕获此事件? 最佳答案 SIGHUP的等价物是通过您在SetConsoleCtrlHandler注册的回调提供的.您的回调函数将在dwCtrlType=CTRL_CLOSE_EVENT的任意线程池线程上调用。您有5秒的时间进行清理,您无法取消关闭。示例代码可在thisMSDNarticle中找到

python - 关闭 PyQt 对话框终止父进程? (PyQt4/Pyside) 示例代码

我正在处理的QSystemTrayIcon应用程序有问题。我使用SystemTrayIcon作为父项或祖父项创建的任何对话框在关闭时都会终止整个应用程序,即使我覆盖了“拒绝”方法也是如此。这是一个没有图标的简化示例。运行它时(这里是Windows7),任务栏上应该有一个空白托盘图标应用程序。如果您左键单击它,将弹出一个空对话框。单击“X”关闭对话框也将完全终止python进程。fromPySideimportQtGui,QtCoreclassRestartDialog(QtGui.QDialog):def__init__(self,parent):super(RestartDialog

c++ - 查找可能是由于线程锁定(可能)引起的性能问题

我花了一些时间运行valgrind/callgrind来分析一个使用许多线程进行大量TCP/IP通信的服务器。在提高性能一段时间后,我意识到在这个特定的测试场景中,进程不受CPU限制,所以我看到的性能“改进”没有用。理论上CPU应该很忙。我知道它连接的TCP/IP设备不是限制,因为服务器在两台机器上运行。一个是PC,另一个是带有Arm处理器的嵌入式设备。即使是嵌入式设备也只有大约2%的CPU使用率,但它执行的事务要少得多——大约十分之一。尽管我们试图尽快获取数据,但两个系统最多只能获取大约2%。我的猜测是某个互斥锁被锁定并占用了一个线程。这是一个纯粹的猜测!系统中有几个线程具有公共(p

windows - 线程等待原因

我一直在使用在以下帖子中找到的代码:Howtogetthreadstate(e.g.suspended),memory+CPUusage,starttime,priority,etc我正在检查线程状态,下面的枚举描述了线程“等待”状态的原因-enumKWAIT_REASON{Executive,FreePage,PageIn,PoolAllocation,DelayExecution,Suspended,UserRequest,WrExecutive,WrFreePage,WrPageIn,WrPoolAllocation,WrDelayExecution,WrSuspended,Wr

c++ - 从线程中获取 native 句柄?

我正在使用VS2012,我想在运行的线程中设置线程优先级。目标是用最高优先级状态初始化所有线程。为此,我想为线程获取一个HANDLE。我在访问对应于thread对象的指针时遇到一些问题。这可能吗?从调用主线程,指针是有效的,从C++11线程它被设置为CCCCCCCC。可以预见的是,取消引用一些无意义的内存位置会导致崩溃。下面的代码是显示问题的简化版本。#include"stdafx.h"#include#include#include#include#include#includeusingnamespacestd;classthreadContainer{thread*mT;cond

c++ - GlobalMemoryStatusEx 线程安全吗?

来自MSDNpage:“GlobalMemoryStatusEx函数返回的信息是易变的。不能保证对该函数的两次连续调用将返回相同的信息。”这是有道理的,但是我无法确定这是否是线程安全的。有人确定知道一种或另一种方式吗?我已尝试使用谷歌搜索,但找不到此信息。 最佳答案 MSDN页面上说的是函数返回的信息是随时间变化的:这就是“volatile”的意思。例如,GetSystemTime返回的信息也是“易变的”。关于过程的其他不同概念是“可重入”和“线程安全”。可重入意味着过程使用的信息依赖于局部变量,而不是全局变量,这可以解释为线程安全

c++ - 将 Linux 打开、读取、写入、关闭功能转换为在 Windows 上工作

下面的代码是为Linux编写的,使用了打开、读取、写入和关闭。我在Windows计算机上工作,我通常在其中使用fopen、fgets、fputs、fclose。现在,我收到打开、读取、写入和关闭的无原型(prototype)错误。是否有我可以包含的头文件以使其在Windows计算机上运行,​​或者我是否需要转换代码?你能展示如何转换它以便它在Windows上工作相同,或者至少让我指向一个显示如何转换它的在线文档吗?#include#include#include#include#include#include#ifdefunix#include#endif#include#includ

windows - 如何找到线程本地存储的开始和结束?

在Windows和Linux下,如何在给定线程句柄的情况下确定其对应的静态线程本地存储block的开始和结束? 最佳答案 您可以在ThreadInformationBlock中找到此信息.但是请注意,这样做会访问未记录的结构,因此高度不可移植并且可能会在未来版本的Windows中中断。您似乎可以从TIB获取当前线程的线程本地存储区域;我不确定你会得到另一个线程的TLS。您可以尝试深入研究TIB中偏移量0x30处的进程环境block(PEB),但同样,您正在处理可能会发生变化的未记录结构。

php - 在 Windows 上使用 PHP fork /线程的最佳方法是什么?

我有一个php脚本,用于检查许多(数千)站点的更新。有时(随着站点数量的增加更频繁),我在更新其中一个站点时遇到执行超时,整个脚本都付诸东流了。我能想到的最好的想法是fork每个更新,所以如果它死了,整个更新就会继续。从我收集到的信息来看,PHP线程似乎不是什么值得依赖的东西,尤其是在Windows平台上(不幸的是我必须在Windows平台上工作)。我考虑过使用curl作为fork机制,但服务器的成本(时间和处理能力)会不会高得多?我很高兴听到一些关于PHPfork/线程的想法和经验...谢谢,奥马尔。 最佳答案 如果您打算使用cU

c++ - 为什么我的简单 hello world C++ 应用程序使用 3 个线程?

当我查看Windows任务管理器时,它说它正在使用3个线程?为什么是这样?我原以为只使用1个线程。我使用NetbeansIDE和MinGW-Windowsg++编译它。谢谢代码:#includeusingnamespacestd;intmain(){cout>input;return(EXIT_SUCCESS);} 最佳答案 也许Netbeans为内部目的放置了一些包装器?(调试、分析、...)无论如何,这并不重要,因为您没有创建它:这些线程不应干扰您的程序,您的程序也不会干扰它们。 关